import log from '@/utils/log';
import storys from '@/models/storys';
import { onlineStoryStatus } from '@/utils/data';
import { deleteMindByStoryId } from '../mind';

export default async (event: TapdStoryEventType) => {
  const { id, object_type: objectType, status, source }: TapdStoryEventType = event;
  // 判断是需求
  if (objectType !== 'story') {
    log.error('/api/tapd/fieldchange只处理需求', JSON.stringify(event));
    throw Error('这里只处理需求。');
  }

  // 判断是不是发布生产完成。如果发布完成，删除环境使用记录
  if (onlineStoryStatus.includes(status)) {
    await storys.updateAdd({ ...event }, { id });
    // 删除脑图
    await deleteMindByStoryId({ id });
  } else {
    // 如果存在保存并修改
    const { _id, ...props } = event;
    await storys.updateAdd({ ...props, source: source || 'tapd' }, { id });
    // 如果存在跳过不做任何修改
    // db.updateOne({ id }, { $setOnInsert: event }, { upsert: true });
    // 以上两种方式在数据数据不存在的情况下均会执行新增操作
    // }
  }
};
